package com.avengers.core.bean.enums;


/**
 * @author yu.wang
 * @since 2025/11/17 14:27
 **/
public class Networks {
    public static class Protocol {
        /**
         * 网络层 1
         * Internet Protocol
         * IPv4采用32位地址（约42亿个），地址枯竭推动IPv6（128位地址）普及；IPv6支持自动配置、内置安全机制。
         * 核心作用：定义数据包格式，实现跨网络主机寻址和路由转发。
         * 优缺点：核心协议，无连接、不可靠（不保证数据包送达），需依赖上层保障传输可靠性。
         */
        public static final String IP = "IP";
        /**
         * 网络层 2
         * Internet Control Message Protocol
         * 核心作用：用于网络设备间的差错报告（如目标不可达）和网络诊断（如ping命令）。
         * 关键应用：ping基于ICMP Echo Request/Reply实现；traceroute通过ICMP超时消息追踪路由路径。
         */
        public static final String ICMP = "ICMP";
        /**
         * 网络层 3
         * Address Resolution Protocol
         * 核心作用：将IPv4地址解析为局域网内的MAC地址，实现二层数据帧转发。
         * 工作机制：广播ARP请求，目标主机单播ARP应答；存在ARP欺骗安全风险。
         */
        public static final String ARP = "ARP";
        /**
         * 传输层 1
         * Transmission Control Protocol
         * 核心特性：面向连接、可靠传输、字节流服务，通过三次握手建立连接、四次挥手关闭连接。
         * 可靠性机制：序号与确认号、重传机制、流量控制（滑动窗口）、拥塞控制（慢启动、拥塞避免）。
         * 适用场景：HTTP/HTTPS、FTP、SSH等需确保数据完整传输的场景。
         * 优缺点：可靠但开销大，延迟较高；不适用于实时通信场景。
         */
        public static final String TCP = "TCP";
        /**
         * 传输层
         * User Datagram Protocol
         * 核心特性：无连接、不可靠传输、 datagram服务，无握手/挥手过程，开销低、延迟小。
         * 适用场景：DNS、DHCP、视频流、游戏等对实时性要求高的场景。
         * 优缺点：高效低延迟，但数据包可能丢失、乱序；需上层应用自行处理可靠性问题。
         */
        public static final String UDP = "UDP";
        /***
         * 传输层
         * Stream Control Transmission Protocol
         * 核心特性：结合TCP可靠性与UDP高效性，支持多流传输、消息边界保留、容错路由。
         * 适用场景：VoIP、5G核心网等场景。
         */
        public static final String SCTP = "SCTP";
        /**
         * 应用层 Web相关
         * HyperText Transfer Protocol
         * 明文传输，默认端口80；无状态协议，依赖Cookie/Session维持会话。
         */
        public static final String HTTP = "HTTP";
        /**
         * 应用层 Web相关
         * HTTP+TLS/SSL加密，默认端口443；提供数据机密性和完整性，需证书认证。
         */
        public static final String HTTPS = "HTTPS";
        /**
         * 应用层 Web相关
         * 全双工通信协议，通过HTTP握手升级，适用于实时通信（如聊天、弹幕）。
         */
        public static final String WEB_SOCKET = "WebSocket";
        /**
         * 应用层 文件传输
         * File Transfer Protocol
         * 支持文件上传/下载，使用21端口（控制连接）和20端口（数据连接）；明文传输，安全性差。
         */
        public static final String FTP = "FTP";
        /**
         * 应用层 文件传输
         * SSH File Transfer Protocol
         * 基于SSH加密，默认端口22；安全性高，替代FTP成为主流。
         */
        public static final String SFTP = "SFTP";
        /**
         * 应用层 远程控制
         * Secure Shell
         * 加密远程登录协议，默认端口22；替代Telnet（明文传输，不安全）。
         */
        public static final String SSH = "SSH";
        /**
         * 应用层 远程控制
         * 明文传输，仅适用于内网测试场景。
         */
        public static final String TELNET = "Telnet";
        /**
         * 应用层 域名解析
         * Domain Name System
         * 将域名解析为IP地址，默认UDP端口53（查询）、TCP端口53（区域传输）；支持递归查询和迭代查询。
         */
        public static final String DNS = "DNS";
        /**
         * 应用层 邮件
         * Simple Mail Transfer Protocol
         * 发送邮件，默认端口25（明文）、465（SSL加密）。
         */
        public static final String SMTP = "SMTP";
        /**
         * 应用层 邮件
         * Post Office Protocol v3
         * 接收邮件，默认端口110（明文）、995（SSL加密）；下载邮件后本地存储，服务器可删除。
         */
        public static final String POP3 = "POP3";
        /**
         * 应用层 邮件
         * Internet Message Access Protocol v4
         * 接收邮件，默认端口143（明文）、993（SSL加密）；支持邮件同步，多设备访问一致。
         */
        public static final String IMAP4 = "IMAP4";
        /**
         * 应用层 动态网络配置
         * Dynamic Host Configuration Protocol
         * 自动分配IP地址、子网掩码、网关等网络参数，默认UDP端口67（服务器）、68（客户端）。
         */
        public static final String DHCP = "DHCP";
        /**
         * 其他 安全协议
         * Transport Layer Security
         * 传输层安全协议
         * 是基于TCP的传输层安全协议，核心作用是为网络通信提供机密性、完整性、身份认证，替代不安全的HTTP等协议，是HTTPS、SSH等安全通信的基础。
         */
        public static final String TLS = "TLS";
        /**
         * 其他 安全协议
         * Secure Sockets Layer
         * 早期用于网络通信加密的安全协议，运行在TCP/IP传输层与应用层之间，核心作用是为HTTP、FTP等应用协议提供机密性、完整性、身份认证，是TLS协议的前身，目前已被TLS取代。
         */
        public static final String SSL = "SSL";
        /**
         * TLS/SSL
         * 保障应用层数据传输安全，采用对称加密（传输数据）和非对称加密（交换密钥）。
         */
        public static final String TLS_SSL = "TLS/SSL";
        /**
         * 其他 安全协议
         * 保障网络层IP数据包加密传输，适用于VPN场景。
         */
        public static final String IP_SEC = "IPsec";
        /**
         * 其他 多媒体协议
         * Real-time Transport Protocol
         * 实时传输音频/视频数据，无纠错机制，通常与RTCP（实时控制协议）配合使用。
         */
        public static final String RTP = "RTP";
        /**
         * 其他 多媒体协议
         * Real Time Streaming Protocol
         * 控制流媒体传输，如播放、暂停、快进。
         */
        public static final String RTSP = "RTSP";
        /**
         * 其他 路由协议
         * Routing Information Protocol
         * 距离矢量路由协议，基于跳数度量，最大跳数15。
         */
        public static final String RIP = "RIP";
        /**
         * 其他 路由协议
         * Open Shortest Path First
         * 链路状态路由协议，基于SPF算法，适用于大型网络。
         */
        public static final String OSPF = "OSPF";
        /**
         * 其他 路由协议
         * Border Gateway Protocol
         * 外部网关协议，用于互联网自治系统间路由交换。
         */
        public static final String BGP = "BGP";
        /**
         * Java Secure Socket Extension
         * Java 安全套接字扩展
         * Java 平台默认的 TLS/SSL 协议底层组件。
         */
        public static final String SUN_JSSE = "SunJSSE";
    }
}
